# -*- coding: utf-8 -*-
"""
    Map LaTeX filenames to ReST filenames
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :copyright: 2007 by Georg Brandl.
    :license: Python license.
"""

# '' means: use same name, strip prefix if applicable.
# None means: don't translate at all.

_mapping = {
    'lib': {
        '__newname__' : 'modules',

        'asttable': '',
        'compiler': '',
        'distutils': '',
        'email': '',
        'emailcharsets': 'email.charset',
        'emailencoders': 'email.encoders',
        'emailexc': 'email.errors',
        'emailgenerator': 'email.generator',
        'emailheaders': 'email.header',
        'emailiter': 'email.iterators',
        'emailmessage': 'email.message',
        'emailmimebase': 'email.mime',
        'emailparser': 'email.parser',
        'emailutil': 'email.util',
        'libaifc': '',
        'libanydbm': '',
        'libarray': '',
        'libascii': 'curses.ascii',
        'libast': '',
        'libasynchat': '',
        'libasyncore': '',
        'libatexit': '',
        'libaudioop': '',
        'libbase64': '',
        'libbasehttp': 'basehttpserver',
        'libbastion': '',
        'libbinascii': '',
        'libbinhex': '',
        'libbisect': '',
        'libbltin': '__builtin__',
        'libbsddb': '',
        'libbz2': '',
        'libcalendar': '',
        'libcfgparser': 'configparser',
        'libcgihttp': 'cgihttpserver',
        'libcgi': '',
        'libcgitb': '',
        'libchunk': '',
        'libcmath': '',
        'libcmd': '',
        'libcodecs': '',
        'libcodeop': '',
        'libcode': '',
        'libcollections': '',
        'libcolorsys': '',
        'libcommands': '',
        'libcompileall': '',
        'libcontextlib': '',
        'libcookielib': '',
        'libcookie': '',
        'libcopyreg': 'copy_reg',
        'libcopy': '',
        'libcrypt': '',
        'libcsv': '',
        'libctypes': '',
        'libcursespanel': 'curses.panel',
        'libcurses': '',
        'libdatetime': '',
        'libdbhash': '',
        'libdbm': '',
        'libdecimal': '',
        'libdifflib': '',
        'libdircache': '',
        'libdis': '',
        'libdl': '',
        'libdoctest': '',
        'libdocxmlrpc': 'docxmlrpcserver',
        'libdumbdbm': '',
        'libdummythreading': 'dummy_threading',
        'libdummythread': 'dummy_thread',
        'liberrno': '',
        'libetree': 'xml.etree.elementtree',
        'libfcntl': '',
        'libfilecmp': '',
        'libfileinput': '',
        'libfnmatch': '',
        'libformatter': '',
        'libfpectl': '',
        'libfpformat': '',
        'libftplib': '',
        'libfunctools': '',
        'libfuture': '__future__',
        'libgc': '',
        'libgdbm': '',
        'libgetopt': '',
        'libgetpass': '',
        'libgettext': '',
        'libglob': '',
        'libgrp': '',
        'libgzip': '',
        'libhashlib': '',
        'libheapq': '',
        'libhmac': '',
        'libhotshot': '',
        'libhtmllib': '',
        'libhtmlparser': '',
        'libhttplib': '',
        'libimageop': '',
        'libimaplib': '',
        'libimgfile': '',
        'libimghdr': '',
        'libimp': '',
        'libinspect': '',
        'libitertools': '',
        'libjpeg': '',
        'libkeyword': '',
        'liblinecache': '',
        'liblocale': '',
        'liblogging': '',
        'libmailbox': '',
        'libmailcap': '',
        'libmain': '__main__',
        'libmarshal': '',
        'libmath': '',
        'libmd5': '',
        'libmhlib': '',
        'libmimetools': '',
        'libmimetypes': '',
        'libmimewriter': '',
        'libmimify': '',
        'libmmap': '',
        'libmodulefinder': '',
        'libmsilib': '',
        'libmsvcrt': '',
        'libmultifile': '',
        'libmutex': '',
        'libnetrc': '',
        'libnew': '',
        'libnis': '',
        'libnntplib': '',
        'liboperator': '',
        'liboptparse': '',
        'libos': '',
        'libossaudiodev': '',
        'libparser': '',
        'libpdb': '',
        'libpickle': '',
        'libpickletools': '',
        'libpipes': '',
        'libpkgutil': '',
        'libplatform': '',
        'libpopen2': '',
        'libpoplib': '',
        'libposixpath': 'os.path',
        'libposix': '',
        'libpprint': '',
        'libprofile': '',
        'libpty': '',
        'libpwd': '',
        'libpyclbr': '',
        'libpycompile': 'py_compile',
        'libpydoc': '',
        'libpyexpat': '',
        'libqueue': '',
        'libquopri': '',
        'librandom': '',
        'libreadline': '',
        'librepr': '',
        'libre': '',
        'libresource': '',
        'librexec': '',
        'librfc822': '',
        'librlcompleter': '',
        'librobotparser': '',
        'librunpy': '',
        'libsched': '',
        'libselect': '',
        'libsets': '',
        'libsgmllib': '',
        'libsha': '',
        'libshelve': '',
        'libshlex': '',
        'libshutil': '',
        'libsignal': '',
        'libsimplehttp': 'simplehttpserver',
        'libsimplexmlrpc': 'simplexmlrpcserver',
        'libsite': '',
        'libsmtpd': '',
        'libsmtplib': '',
        'libsndhdr': '',
        'libsocket': '',
        'libsocksvr': 'socketserver',
        'libspwd': '',
        'libsqlite3': '',
        'libstat': '',
        'libstatvfs': '',
        'libstringio': '',
        'libstringprep': '',
        'libstring': '',
        'libstruct': '',
        'libsunaudio': '',
        'libsunau': '',
        'libsubprocess': '',
        'libsymbol': '',
        'libsyslog': '',
        'libsys': '',
        'libtabnanny': '',
        'libtarfile': '',
        'libtelnetlib': '',
        'libtempfile': '',
        'libtermios': '',
        'libtest': '',
        'libtextwrap': '',
        'libthreading': '',
        'libthread': '',
        'libtimeit': '',
        'libtime': '',
        'libtokenize': '',
        'libtoken': '',
        'libtraceback': '',
        'libtrace': '',
        'libtty': '',
        'libturtle': '',
        'libtypes': '',
        'libunicodedata': '',
        'libunittest': '',
        'liburllib2': '',
        'liburllib': '',
        'liburlparse': '',
        'libuserdict': '',
        'libuser': '',
        'libuuid': '',
        'libuu': '',
        'libwarnings': '',
        'libwave': '',
        'libweakref': '',
        'libwebbrowser': '',
        'libwhichdb': '',
        'libwinreg': '_winreg',
        'libwinsound': '',
        'libwsgiref': '',
        'libxdrlib': '',
        'libxmllib': '',
        'libxmlrpclib': '',
        'libzipfile': '',
        'libzipimport': '',
        'libzlib': '',
        'tkinter': '',
        'xmldomminidom': 'xml.dom.minidom',
        'xmldompulldom': 'xml.dom.pulldom',
        'xmldom': 'xml.dom',
        'xmletree': 'xml.etree',
        'xmlsaxhandler': 'xml.sax.handler',
        'xmlsaxreader': 'xml.sax.reader',
        'xmlsax': 'xml.sax',
        'xmlsaxutils': 'xml.sax.utils',
        'libal': '',
        'libcd': '',
        'libfl': '',
        'libfm': '',
        'libgl': '',
        'libposixfile': '',

        # specials
        'libundoc': '',
        'libintro': '',

        # -> ref
        'libconsts': 'reference/consts',
        'libexcs': 'reference/exceptions',
        'libfuncs': 'reference/functions',
        'libobjs': 'reference/objects',
        'libstdtypes': 'reference/stdtypes',

        # mainfiles
        'lib': None,
        'mimelib': None,

        # obsolete
        'libni': None,
        'libcmpcache': None,
        'libcmp': None,

        # chapter overviews
        'fileformats': '',
        'filesys': '',
        'frameworks': '',
        'i18n': '',
        'internet': '',
        'ipc': '',
        'language': '',
        'archiving': '',
        'custominterp': '',
        'datatypes': '',
        'development': '',
        'markup': '',
        'modules': '',
        'netdata': '',
        'numeric': '',
        'persistence': '',
        'windows': '',
        'libsun': '',
        'libmm': '',
        'liballos': '',
        'libcrypto': '',
        'libsomeos': '',
        'libsgi': '',
        'libmisc': '',
        'libpython': '',
        'librestricted': '',
        'libstrings': '',
        'libunix': '',
    },

    'ref': {
        '__newname__': 'reference',
        'ref': None,
        'ref1': 'introduction',
        'ref2': 'lexical_analysis',
        'ref3': 'datamodel',
        'ref4': 'executionmodel',
        'ref5': 'expressions',
        'ref6': 'simple_stmts',
        'ref7': 'compound_stmts',
        'ref8': 'toplevel_components',
    },

    'tut': {
        '__newname__': 'tutorial',
        '__labelprefix__': 'tut-',
        'tut': 'tutorial:split',
        'glossary': 'glossary',
    },

    'api': {
        '__newname__': 'c-api',
        '__defaulthighlightlang__': 'c',
        'api': None,

        'abstract': '',
        'concrete': '',
        'exceptions': '',
        'init': '',
        'intro': '',
        'memory': '',
        'newtypes': '',
        'refcounting': '',
        'utilities': '',
        'veryhigh': '',
    },

    'ext': {
        '__newname__': 'extending',
        '__defaulthighlightlang__': 'c',
        'ext': None,

        'building': '',
        'embedding': '',
        'extending': 'extending',
        'newtypes': '',
        'windows': '',
    },

    'dist': {
        '__newname__': 'distutils',
        'dist': 'distutils:split',
        'sysconfig': '',
    },

    'mac': {
        '__newname__': 'macmodules',
        'mac': None,

        'libaepack': 'aepack',
        'libaetools': 'aetools',
        'libaetypes': 'aetypes',
        'libautogil': 'autogil',
        'libcolorpicker': 'colorpicker',
        'libframework': 'framework',
        'libgensuitemodule': 'gensuitemodule',
        'libmacic': 'macic',
        'libmacos': 'macos',
        'libmacostools': 'macostools',
        'libmac': 'mac',
        'libmacui': 'macui',
        'libminiae': 'miniae',
        'libscrap': 'scrap',
        'scripting': '',
        'toolbox': '',
        'undoc': '',
        'using': '',

    },

    'inst': {
        '__newname__': 'install',
        '__defaulthighlightlang__': 'none',
        'inst': 'index',
    },

    'whatsnew': {
        '__newname__': 'whatsnew',
        'whatsnew20': '2.0',
        'whatsnew21': '2.1',
        'whatsnew22': '2.2',
        'whatsnew23': '2.3',
        'whatsnew24': '2.4',
        'whatsnew25': '2.5',
        'whatsnew26': '2.6',
    },

    'commontex': {
        '__newname__': '',
        'boilerplate': None,
        'patchlevel': None,
        'copyright': '',
        'license': '',
        'reportingbugs': 'bugs',
    },
}

fn_mapping = {}

for dir, files in _mapping.iteritems():
    newmap = fn_mapping[dir] = {}
    for fn in files:
        if not fn.startswith('_') and files[fn] == '':
            if fn.startswith(dir):
                newmap[fn] = fn[len(dir):]
            else:
                newmap[fn] = fn
        else:
            newmap[fn] = files[fn]


# new directories to create
dirs_to_make = [
    'c-api',
    'data',
    'distutils',
    'documenting',
    'extending',
    'includes',
    'includes/sqlite3',
    'install',
    'macmodules',
    'modules',
    'reference',
    'tutorial',
    'whatsnew',
]

# includefiles for \verbatiminput and \input
includes_mapping = {
    '../../Parser/Python.asdl': None,     # XXX
    '../../Lib/test/exception_hierarchy.txt': None,
    'emailmessage': 'email.message.rst',
    'emailparser': 'email.parser.rst',
    'emailgenerator': 'email.generator.rst',
    'emailmimebase': 'email.mime.rst',
    'emailheaders': 'email.header.rst',
    'emailcharsets': 'email.charset.rst',
    'emailencoders': 'email.encoders.rst',
    'emailexc': 'email.errors.rst',
    'emailutil': 'email.util.rst',
    'emailiter': 'email.iterators.rst',
}

# new files to copy from converter/newfiles
newfiles_mapping = {
    'conf.py': 'conf.py',
    'TODO': 'TODO',

    'ref_index.rst': 'reference/index.rst',
    'tutorial_index.rst': 'tutorial/index.rst',
    'modules_index.rst': 'modules/index.rst',
    'mac_index.rst': 'macmodules/index.rst',
    'ext_index.rst': 'extending/index.rst',
    'api_index.rst': 'c-api/index.rst',
    'dist_index.rst': 'distutils/index.rst',
    'contents.rst': 'contents.rst',
    'about.rst': 'about.rst',

    'doc.rst': 'documenting/index.rst',
    'doc_intro.rst': 'documenting/intro.rst',
    'doc_style.rst': 'documenting/style.rst',
    'doc_sphinx.rst': 'documenting/sphinx.rst',
    'doc_rest.rst': 'documenting/rest.rst',
    'doc_markup.rst': 'documenting/markup.rst',
}

# copy files from the old doc tree
copyfiles_mapping = {
    'api/refcounts.dat': 'data',
    'lib/email-*.py': 'includes',
    'lib/minidom-example.py': 'includes',
    'lib/tzinfo-examples.py': 'includes',
    'lib/sqlite3/*.py': 'includes/sqlite3',
    'ext/*.c': 'includes',
    'ext/*.py': 'includes',
    'commontex/typestruct.h': 'includes',
}

# files to rename
rename_mapping = {
    'tutorial/1_tutorial.rst': None, # delete
    'tutorial/2_tutorial.rst': 'tutorial/appetite.rst',
    'tutorial/3_tutorial.rst': 'tutorial/interpreter.rst',
    'tutorial/4_tutorial.rst': 'tutorial/introduction.rst',
    'tutorial/5_tutorial.rst': 'tutorial/controlflow.rst',
    'tutorial/6_tutorial.rst': 'tutorial/datastructures.rst',
    'tutorial/7_tutorial.rst': 'tutorial/modules.rst',
    'tutorial/8_tutorial.rst': 'tutorial/inputoutput.rst',
    'tutorial/9_tutorial.rst': 'tutorial/errors.rst',
    'tutorial/10_tutorial.rst': 'tutorial/classes.rst',
    'tutorial/11_tutorial.rst': 'tutorial/stdlib.rst',
    'tutorial/12_tutorial.rst': 'tutorial/stdlib2.rst',
    'tutorial/13_tutorial.rst': 'tutorial/whatnow.rst',
    'tutorial/14_tutorial.rst': 'tutorial/interactive.rst',
    'tutorial/15_tutorial.rst': 'tutorial/floatingpoint.rst',
    'tutorial/16_tutorial.rst': None, # delete

    'distutils/1_distutils.rst': 'distutils/introduction.rst',
    'distutils/2_distutils.rst': 'distutils/setupscript.rst',
    'distutils/3_distutils.rst': 'distutils/configfile.rst',
    'distutils/4_distutils.rst': 'distutils/sourcedist.rst',
    'distutils/5_distutils.rst': 'distutils/builtdist.rst',
    'distutils/6_distutils.rst': 'distutils/packageindex.rst',
    'distutils/7_distutils.rst': 'distutils/uploading.rst',
    'distutils/8_distutils.rst': 'distutils/examples.rst',
    'distutils/9_distutils.rst': 'distutils/extending.rst',
    'distutils/10_distutils.rst': 'distutils/commandref.rst',
    'distutils/11_distutils.rst': 'distutils/apiref.rst',
}

# toctree entries
toctree_mapping = {
    'mac/scripting': ['gensuitemodule', 'aetools', 'aepack', 'aetypes', 'miniae'],
    'mac/toolbox': ['colorpicker'],
    'lib/libstrings': ['string', 're', 'struct', 'difflib', 'stringio', 'textwrap',
                       'codecs', 'unicodedata', 'stringprep', 'fpformat'],
    'lib/datatypes': ['datetime', 'calendar', 'collections', 'heapq', 'bisect',
                      'array', 'sets', 'sched', 'mutex', 'queue', 'weakref',
                      'userdict', 'types', 'new', 'copy', 'pprint', 'repr'],
    'lib/numeric': ['math', 'cmath', 'decimal', 'random', 'itertools', 'functools',
                    'operator'],
    'lib/netdata': ['email', 'mailcap', 'mailbox', 'mhlib', 'mimetools', 'mimetypes',
                    'mimewriter', 'mimify', 'multifile', 'rfc822',
                    'base64', 'binhex', 'binascii', 'quopri', 'uu'],
    'lib/markup': ['htmlparser', 'sgmllib', 'htmllib', 'pyexpat', 'xml.dom',
                   'xml.dom.minidom', 'xml.dom.pulldom', 'xml.sax', 'xml.sax.handler',
                   'xml.sax.utils', 'xml.sax.reader', 'xml.etree.elementtree'],
    'lib/fileformats': ['csv', 'configparser', 'robotparser', 'netrc', 'xdrlib'],
    'lib/libcrypto': ['hashlib', 'hmac', 'md5', 'sha'],
    'lib/filesys': ['os.path', 'fileinput', 'stat', 'statvfs', 'filecmp',
                    'tempfile', 'glob', 'fnmatch', 'linecache', 'shutil', 'dircache'],
    'lib/archiving': ['zlib', 'gzip', 'bz2', 'zipfile', 'tarfile'],
    'lib/persistence': ['pickle', 'copy_reg', 'shelve', 'marshal', 'anydbm',
                        'whichdb', 'dbm', 'gdbm', 'dbhash', 'bsddb', 'dumbdbm',
                        'sqlite3'],
    'lib/liballos': ['os', 'time', 'optparse', 'getopt', 'logging', 'getpass',
                     'curses', 'curses.ascii', 'curses.panel', 'platform',
                     'errno', 'ctypes'],
    'lib/libsomeos': ['select', 'thread', 'threading', 'dummy_thread', 'dummy_threading',
                      'mmap', 'readline', 'rlcompleter'],
    'lib/libunix': ['posix', 'pwd', 'spwd', 'grp', 'crypt', 'dl', 'termios', 'tty',
                    'pty', 'fcntl', 'pipes', 'posixfile', 'resource', 'nis',
                    'syslog', 'commands'],
    'lib/ipc': ['subprocess', 'socket', 'signal', 'popen2', 'asyncore', 'asynchat'],
    'lib/internet': ['webbrowser', 'cgi', 'cgitb', 'wsgiref', 'urllib', 'urllib2',
                     'httplib', 'ftplib', 'poplib', 'imaplib',
                     'nntplib', 'smtplib', 'smtpd', 'telnetlib', 'uuid', 'urlparse',
                     'socketserver', 'basehttpserver', 'simplehttpserver',
                     'cgihttpserver', 'cookielib', 'cookie', 'xmlrpclib',
                     'simplexmlrpcserver', 'docxmlrpcserver'],
    'lib/libmm': ['audioop', 'imageop', 'aifc', 'sunau', 'wave', 'chunk',
                  'colorsys', 'imghdr', 'sndhdr', 'ossaudiodev'],
    'lib/i18n': ['gettext', 'locale'],
    'lib/frameworks': ['cmd', 'shlex'],
    'lib/development': ['pydoc', 'doctest', 'unittest', 'test'],
    'lib/libpython': ['sys', '__builtin__', '__main__', 'warnings', 'contextlib',
                      'atexit', 'traceback', '__future__', 'gc', 'inspect',
                      'site', 'user', 'fpectl'],
    'lib/custominterp': ['code', 'codeop'],
    'lib/librestricted': ['rexec', 'bastion'],
    'lib/modules': ['imp', 'zipimport', 'pkgutil', 'modulefinder', 'runpy'],
    'lib/language': ['parser', 'symbol', 'token', 'keyword', 'tokenize',
                     'tabnanny', 'pyclbr', 'py_compile', 'compileall', 'dis',
                     'pickletools', 'distutils'],
    'lib/compiler': ['ast'],
    'lib/libmisc': ['formatter'],
    'lib/libsgi': ['al', 'cd', 'fl', 'fm', 'gl', 'imgfile', 'jpeg'],
    'lib/libsun': ['sunaudio'],
    'lib/windows': ['msilib', 'msvcrt', '_winreg', 'winsound'],
}

# map sourcefilename to [pre, post]
amendments_mapping = {
    'license.rst': ['''\
.. highlightlang:: none

*******************
History and License
*******************

''', ''],

    'bugs.rst': ['''\
**************
Reporting Bugs
**************

''', ''],

    'copyright.rst': ['''\
*********
Copyright
*********

''', ''],

    'install/index.rst': ['''\
.. _install-index:

''', ''],
}
